# include <sys/types.h>
# include <sys/wait.h>
# include <unistd.h>
# include <stdlib.h>
# include <stdio.h>

int hijo(void);
void padre(void);

int main(void)
{
	int status;
	pid_t pid;

/* Creación de un proceso hijo */
	switch(pid=fork())
	{
		case (pid_t) -1:
			perror("fork");
			exit(EXIT_FAILURE);
		case (pid_t) 0:
			exit(hijo());
			break;
		default:
			padre();
/* pid_t waitpid(pid_t pid, int *status, int options): provoca una espera del
proceso padre hasta que el proceso hijo con identificador pid finalice. Si pid es
–1 realiza una espera asociada a la finalización de todos los procesos hijos, es
decir, se comporta como wait(). La información del estado del proceso hijo se
almacena en status. El tercer argumento es una máscara de bits (deberá valer
0 “OR”). La función devuelve el identificador pid del proceso cuyo estado está
proporcionando. */
			(void) waitpid(pid,&status,0);
			break;
	}
exit(EXIT_SUCCESS);
}

/* Declaración de las dos funciones que permiten identificar ambos procesos */
int hijo(void)
{
	int i;

	for(i=0;i<10;i++){
		printf("Hola soy el proceso hijo: %d\n",i);
	}
return 1;
}
void padre(void)
{
	printf("Hola soy el proceso padre\n");
}

